perm filename TMP.TMP[MF,DEK]4 blob sn#557228 filedate 1981-01-22 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	David, Here is a list of what I noticed while going thru all of your .SAI files
C00009 ENDMK
C⊗;
David, Here is a list of what I noticed while going thru all of your .SAI files
on MF,DRF (I checked MFHDR,MFNTRP,MFOUT,MFPRE,MFRAST,ADIS,PRESSO,MFF20,MFFIL,
	MFDOVR,MFBASE,MFSYS,and ALFOUT).
Except that I silently updated your files in a few places where mine were more
up to date, because Lyle and I fixed a few problems in the Dover proofmode.

In MFF20, I changed the following comment:
2)		begin comment if lookup failed and no explicit directory was given,
2)			try default directory <MF>;

In ADIS, I inserted a recent Ramshaw patch:
**** File 1) ADIS.SAI[MF,DEK]/5P/50L
1)		adisLIMITS(screenxmin,screenxmax,screenymin,screenymax);
1)		comment  bitmap region;
**** File 2) ADIS.SAI[MF,DRF]/5P/50L
2)		adisLIMITS(screenxmin,screenxmax,screenymin+1,screenymax+1);
2)		comment  bitmap region;

In ADIS, I seriously question the following (see SAIL manual p50, the
second argument to point( , , ) is an address!)
**** File 1) ADIS.SAI[MF,DEK]/14P/78L
1)		get←point(4,rast[xw],-1);
1)		adisBOUT(pdepositm);
**** File 2) ADIS.SAI[MF,DRF]/14P/78L
2)	IFXMEM	var!gets!rast(xtemp,xw); get←point(4,xtemp,-1);
2)	ELSEC	get←point(4,rast[xw],-1);
2)	ENDC
2)		adisBOUT(pdepositm);
***************
**** File 1) ADIS.SAI[MF,DEK]/14P/89L
1)				begin xw←xw+rspan; get←point(4,rast[xw],-1);
1)				end;
**** File 2) ADIS.SAI[MF,DRF]/14P/91L
2)				begin xw←xw+rspan; 
2)	IFXMEM			var!gets!rast(xtemp,xw); get←point(4,xtemp,-1);
2)	ELSC			get←point(4,rast[xw],-1);
2)	ENDC
2)				end;
***************

In MFSYS, I entered code re errcnt that had been put into my MFSYS recently.

Also in MFSYS, I don't think the TOPS20 version initializes rast when XMEM
is false....

In MFDOVR, there appears to be another bug; doesn't IDPB store into its
first argument? Look what you did!
**** File 1) MFDOVR.SAI[MF,DEK]/3P/104L
1)			idpb(rast[wdaddr] lsh shft,bitptr);
1)			if ldb(pfield)=4 then 
**** File 2) MFDOVR.SAI[MF,DRF]/3P/110L
2)	IFXMEM		var!gets!rast!lsh!expr(xtemp,wdaddr,shft); idpb(xtemp,bitptr);
2)	ELSEC		idpb(rast[wdaddr] lsh shft,bitptr);	
2)	ENDC
2)			if ldb(pfield)=4 then 
***************

In MFRAST, the following are probably wrong, but they appear only when TOP20
code is driving the Datadisc so they should simply be removed:
**** File 1) MFRAST.SAI[MF,DEK]/11P/60L
1)		get←point(4,rast[xw],-1);
1)		put←point(32,memory[memory[location(sline)+ddymax-y]+location(dbuf)],-1);
**** File 2) MFRAST.SAI[MF,DRF]/11P/60L
2)	IFXMEM	var!gets!rast(xtemp,xw); get←point(4,xtemp,-1);
2)	ELSEC	get←point(4,rast[xw],-1);
2)	ENDC
2)		put←point(32,memory[memory[location(sline)+ddymax-y]+location(dbuf)],-1);
***************


**** File 1) MFRAST.SAI[MF,DEK]/11P/70L
1)				begin xw←xw+rspan; get←point(4,rast[xw],-1);
1)				end;
**** File 2) MFRAST.SAI[MF,DRF]/11P/72L
2)				begin xw←xw+rspan; 
2)	IFXMEM			var!gets!rast(xtemp,xw); get←point(4,xtemp,-1);
2)	ELSEC			get←point(4,rast[xw],-1);
2)	ENDC
2)				end;
***************

In MFOUT, I hope you tried proofmode on both Dover and XGP versions, since there
are so many XMEM changes, but those changes look OK at first glance...
Here's something I decided to put into ALFOUT, because it turns out that you
need two different .REL files on TOPS20 depending on whether XMEM is true or false.
(I also made a corresponding comment at the top of p2 of ALFOUT):
**** File 1) MFOUT.SAI[MF,DEK]/11P/9L
1)	ifc WAITS thenc
1)		ifc SPECRAST thenc
1)		require "alfbig.rel[alf,dek]" load_module; elsec
1)		require "alfnrm.rel[alf,dek]" load_module; endc
1)	elsec
1)	internal procedure clean;; internal procedure boundarize;;
1)	internal procedure crscode;;
1)	endc
1)	procedure alfout # outputs portion of character in crsmode;
**** File 2) MFOUT.SAI[MF,DRF]/11P/9L
2)	IFC ALPHATYPEMODE THENC
2)	require "ALFOUT.REL" load_module; comment clean, boundarize, crscode;
2)	ELSEC
2)	internal procedure clean;; internal procedure boundarize;;
2)	internal procedure crscode;;
2)	ENDC
2)	procedure alfout # outputs portion of character in crsmode;
***************